{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 花卉图像分类实验"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 实验介绍"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "本实验主要介绍如何使用MindSpore进行花卉图像分类实验。定义卷积神经网络，并利于该网络进行花卉分类训练和测试。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 实验目的"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 掌握如何使用MindSpore进行卷积神经网络的开发。\n",
    "- 了解如何使用MindSpore进行花卉图片分类任务的训练。\n",
    "- 了解如何使用MindSpore进行花卉图片分类任务的测试。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 预备知识"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 熟练使用Python。\n",
    "- 具备一定的深度学习理论知识，如卷积神经网络、损失函数、优化器，训练策略等。\n",
    "- 了解华为云的基本使用方法，包括[OBS（对象存储）](https://www.huaweicloud.com/product/obs.html)、[ModelArts（AI开发平台）](https://www.huaweicloud.com/product/modelarts.html)、[训练作业](https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0046.html)等功能。华为云官网：https://www.huaweicloud.com\n",
    "- 了解并熟悉MindSpore AI计算框架，MindSpore官网：https://www.mindspore.cn/"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 实验环境"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- MindSpore 1.0.0（MindSpore版本会定期更新，本指导也会定期刷新，与版本配套）；\n",
    "- 华为云ModelArts：ModelArts是华为云提供的面向开发者的一站式AI开发平台，集成了昇腾AI处理器资源池，用户可以在该平台下体验MindSpore。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数据集准备"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "flower_photos共五种鲜花的图片数据，分别为雏菊（daisy ）、蒲公英（dandelion）、玫瑰花（roses）、向日葵(sunflowers)、郁金香（tulips），其中每种约800张图像数据，共计约3670张，可用于深度学习图像分类练习使用，可以在[这里](https://hciaai.obs.cn-north-4.myhuaweicloud.com:443/flower_photos.zip)下载数据集，并解压到本地。\n",
    "\n",
    "```\n",
    "daisy           633张     \n",
    "dandelion       898张\n",
    "roses           641张\n",
    "sunflowers      699张  \n",
    "tulips          799张\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 实验步骤"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 导入MindSpore模块和辅助模块"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "用到的框架主要包括：MindSpore，主要用于深度学习算法的构建，这里主要用于卷积神经网络的搭建，主要以开源的花类数据集为基础，基MindSpore深度学习框架和卷积神经网络（CNN）对花的类型进行分类识别。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[WARNING] ME(8475:281473638848048,MainProcess):2021-03-02-17:49:24.568.03 [mindspore/_check_version.py:207] MindSpore version 1.1.1 and \"te\" wheel package version 1.0 does not match, reference to the match info on: https://www.mindspore.cn/install\n",
      "MindSpore version 1.1.1 and \"topi\" wheel package version 0.6.0 does not match, reference to the match info on: https://www.mindspore.cn/install\n",
      "[WARNING] ME(8475:281473638848048,MainProcess):2021-03-02-17:49:24.587.584 [mindspore/ops/operations/array_ops.py:2302] WARN_DEPRECATED: The usage of Pack is deprecated. Please use Stack.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING: 'ControlDepend' is deprecated from version 1.1 and will be removed in a future version, use 'Depend' instead.\n"
     ]
    }
   ],
   "source": [
    "#easydict模块用于以属性的方式访问字典的值\n",
    "from easydict import EasyDict as edict\n",
    "#glob模块主要用于查找符合特定规则的文件路径名，类似使用windows下的文件搜索\n",
    "import glob\n",
    "#os模块主要用于处理文件和目录\n",
    "import os\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "import mindspore\n",
    "#导入mindspore框架数据集\n",
    "import mindspore.dataset as ds\n",
    "#vision.c_transforms模块是处理图像增强的高性能模块，用于数据增强图像数据改进训练模型。\n",
    "import mindspore.dataset.vision.c_transforms as CV\n",
    "#c_transforms模块提供常用操作，包括OneHotOp和TypeCast\n",
    "import mindspore.dataset.transforms.c_transforms as C\n",
    "from mindspore.common import dtype as mstype\n",
    "from mindspore import context\n",
    "#导入模块用于初始化截断正态分布\n",
    "from mindspore.common.initializer import TruncatedNormal\n",
    "from mindspore import nn\n",
    "from mindspore.train import Model\n",
    "from mindspore.train.callback import ModelCheckpoint, CheckpointConfig, LossMonitor, TimeMonitor\n",
    "from mindspore.train.serialization import load_checkpoint, load_param_into_net\n",
    "from mindspore import Tensor\n",
    "# 设置MindSpore的执行模式和设备\n",
    "context.set_context(mode=context.GRAPH_MODE, device_target=\"Ascend\", device_id=1)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 变量定义"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "cfg = edict({\n",
    "    'data_path': 'flower_photos',\n",
    "    'data_size':3670,\n",
    "    'image_width': 100,  # 图片宽度\n",
    "    'image_height': 100,  # 图片高度\n",
    "    'batch_size': 32,\n",
    "    'channel': 3,  # 图片通道数\n",
    "    'num_class':5,  # 分类类别\n",
    "    'weight_decay': 0.01,\n",
    "    'lr':0.0001,  # 学习率\n",
    "    'dropout_ratio': 0.5,\n",
    "    'epoch_size': 400,  # 训练次数\n",
    "    'sigma':0.01,\n",
    "    \n",
    "    'save_checkpoint_steps': 1,  # 多少步保存一次模型\n",
    "    'keep_checkpoint_max': 1,  # 最多保存多少个模型\n",
    "    'output_directory': './',  # 保存模型路径\n",
    "    'output_prefix': \"checkpoint_classification\"  # 保存模型文件名字\n",
    "})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 读取并处理数据"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "数据读取并处理流程如下：\n",
    "- MindSpore的mindspore.dataset提供了ImageFolderDatasetV2函数，可以直接读取文件夹图片数据并映射文件夹名字为其标签(label)。这里我们使用ImageFolderDatasetV2函数读取'daisy','dandelion','roses','sunflowers','tulips'数据。并将这五类标签映射为：{'daisy':0,'dandelion':1,'roses':2,'sunflowers':3,'tulips':4}\n",
    "- 使用RandomCropDecodeResize、HWC2CHW、TypeCast、shuffle进行数据预处理\n",
    "- 按照8:2的比列将数据划分为训练数据集和测试数据集\n",
    "- 对训练数据和测试数据分批次（batch）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 解压数据集，只需要第一次运行时解压，第二次无需再解压\n",
    "# !wget https://hciaai.obs.cn-north-4.myhuaweicloud.com:443/flower_photos.zip\n",
    "# !unzip flower_photos.zip"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[WARNING] ME(8475:281473638848048,MainProcess):2021-03-02-17:49:25.150.820 [mindspore/dataset/engine/datasets.py:855] Dataset is shuffled before split.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练数据集数量： 2912\n",
      "测试数据集数量： 704\n",
      "通道数/图像长/宽： (3, 100, 100)\n",
      "一张图像的标签样式： 0\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#从目录中读取图像的源数据集。\n",
    "de_dataset = ds.ImageFolderDataset(cfg.data_path,\n",
    "                                   class_indexing={'daisy':0,'dandelion':1,'roses':2,'sunflowers':3,'tulips':4})\n",
    "#解码前将输入图像裁剪成任意大小和宽高比。\n",
    "transform_img = CV.RandomCropDecodeResize([cfg.image_width,cfg.image_height], scale=(0.08, 1.0), ratio=(0.75, 1.333))  #改变尺寸\n",
    "#转换输入图像；形状（H, W, C）为形状（C, H, W）。\n",
    "hwc2chw_op = CV.HWC2CHW()\n",
    "#转换为给定MindSpore数据类型的Tensor操作。\n",
    "type_cast_op = C.TypeCast(mstype.float32)\n",
    "#将操作中的每个操作应用到此数据集。\n",
    "de_dataset = de_dataset.map(input_columns=\"image\", num_parallel_workers=8, operations=transform_img)\n",
    "de_dataset = de_dataset.map(input_columns=\"image\", operations=hwc2chw_op, num_parallel_workers=8)\n",
    "de_dataset = de_dataset.map(input_columns=\"image\", operations=type_cast_op, num_parallel_workers=8)\n",
    "de_dataset = de_dataset.shuffle(buffer_size=cfg.data_size)\n",
    "#划分训练集测试集\n",
    "(de_train,de_test)=de_dataset.split([0.8,0.2])\n",
    "#设置每个批处理的行数\n",
    "#drop_remainder确定是否删除最后一个可能不完整的批（default=False）。\n",
    "#如果为True，并且如果可用于生成最后一个批的batch_size行小于batch_size行，则这些行将被删除，并且不会传播到子节点。\n",
    "de_train=de_train.batch(cfg.batch_size, drop_remainder=True)\n",
    "#重复此数据集计数次数。\n",
    "de_test=de_test.batch(cfg.batch_size, drop_remainder=True)\n",
    "print('训练数据集数量：',de_train.get_dataset_size()*cfg.batch_size)#get_dataset_size()获取批处理的大小。\n",
    "print('测试数据集数量：',de_test.get_dataset_size()*cfg.batch_size)\n",
    "\n",
    "data_next=de_dataset.create_dict_iterator(output_numpy=True).__next__()\n",
    "print('通道数/图像长/宽：', data_next['image'].shape)\n",
    "print('一张图像的标签样式：', data_next['label'])  # 一共5类，用0-4的数字表达类别。\n",
    "\n",
    "plt.figure()\n",
    "plt.imshow(data_next['image'][0,...])\n",
    "plt.colorbar()\n",
    "plt.grid(False)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 定义CNN图像识别网络"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义CNN图像识别网络\n",
    "class Identification_Net(nn.Cell):\n",
    "    def __init__(self, num_class=5,channel=3,dropout_ratio=0.5,trun_sigma=0.01):  # 一共分五类，图片通道数是3\n",
    "        super(Identification_Net, self).__init__()\n",
    "        self.num_class = num_class\n",
    "        self.channel = channel\n",
    "        self.dropout_ratio = dropout_ratio\n",
    "        #设置卷积层\n",
    "        self.conv1 = nn.Conv2d(self.channel, 32,\n",
    "                               kernel_size=5, stride=1, padding=0,\n",
    "                               has_bias=True, pad_mode=\"same\",\n",
    "                               weight_init=TruncatedNormal(sigma=trun_sigma),bias_init='zeros')\n",
    "        #设置ReLU激活函数\n",
    "        self.relu = nn.ReLU()\n",
    "        #设置最大池化层\n",
    "        self.max_pool2d = nn.MaxPool2d(kernel_size=2, stride=2,pad_mode=\"valid\")\n",
    "        self.conv2 = nn.Conv2d(32, 64,\n",
    "                               kernel_size=5, stride=1, padding=0,\n",
    "                               has_bias=True, pad_mode=\"same\",\n",
    "                               weight_init=TruncatedNormal(sigma=trun_sigma),bias_init='zeros')\n",
    "        self.conv3 = nn.Conv2d(64, 128,\n",
    "                               kernel_size=3, stride=1, padding=0,\n",
    "                               has_bias=True, pad_mode=\"same\",\n",
    "                               weight_init=TruncatedNormal(sigma=trun_sigma),bias_init='zeros')\n",
    "        self.conv4 = nn.Conv2d(128, 128,\n",
    "                               kernel_size=3, stride=1, padding=0,\n",
    "                               has_bias=True, pad_mode=\"same\",\n",
    "                               weight_init=TruncatedNormal(sigma=trun_sigma), bias_init='zeros')\n",
    "        self.flatten = nn.Flatten()\n",
    "        self.fc1 = nn.Dense(6*6*128, 1024,weight_init =TruncatedNormal(sigma=trun_sigma),bias_init = 0.1)\n",
    "        self.dropout = nn.Dropout(self.dropout_ratio)\n",
    "        self.fc2 = nn.Dense(1024, 512, weight_init=TruncatedNormal(sigma=trun_sigma), bias_init=0.1)\n",
    "        self.fc3 = nn.Dense(512, self.num_class, weight_init=TruncatedNormal(sigma=trun_sigma), bias_init=0.1)\n",
    "    #构建模型\n",
    "    def construct(self, x):\n",
    "        x = self.conv1(x)\n",
    "        #print(x.shape)\n",
    "        x = self.relu(x)\n",
    "        x = self.max_pool2d(x)\n",
    "        x = self.conv2(x)\n",
    "        x = self.relu(x)\n",
    "        x = self.max_pool2d(x)\n",
    "        x = self.conv3(x)\n",
    "        x = self.max_pool2d(x)\n",
    "        x = self.conv4(x)\n",
    "        x = self.max_pool2d(x)\n",
    "        x = self.flatten(x)\n",
    "        x = self.fc1(x)\n",
    "        x = self.relu(x)\n",
    "        #print(x.shape)\n",
    "        x = self.dropout(x)\n",
    "        x = self.fc2(x)\n",
    "        x = self.relu(x)\n",
    "        x = self.dropout(x)\n",
    "        x = self.fc3(x)\n",
    "        return x"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 模型训练、测试、预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "============== Starting Training ==============\n",
      "epoch: 10 step: 91, loss is 0.8638909\n",
      "epoch: 20 step: 91, loss is 0.9228916\n",
      "epoch: 30 step: 91, loss is 1.1376424\n",
      "epoch: 40 step: 91, loss is 0.50717545\n",
      "epoch: 50 step: 91, loss is 0.6080559\n",
      "epoch: 60 step: 91, loss is 0.7012788\n",
      "epoch: 70 step: 91, loss is 0.68470883\n",
      "epoch: 80 step: 91, loss is 0.5688899\n",
      "epoch: 90 step: 91, loss is 0.4664237\n",
      "epoch: 100 step: 91, loss is 0.5081241\n",
      "epoch: 110 step: 91, loss is 0.53069055\n",
      "epoch: 120 step: 91, loss is 0.8012224\n",
      "epoch: 130 step: 91, loss is 0.25956863\n",
      "epoch: 140 step: 91, loss is 0.77375543\n",
      "epoch: 150 step: 91, loss is 0.62415135\n",
      "epoch: 160 step: 91, loss is 0.18443388\n",
      "epoch: 170 step: 91, loss is 0.37671703\n",
      "epoch: 180 step: 91, loss is 0.35712096\n",
      "epoch: 190 step: 91, loss is 0.37882876\n",
      "epoch: 200 step: 91, loss is 0.5066339\n",
      "epoch: 210 step: 91, loss is 0.21084362\n",
      "epoch: 220 step: 91, loss is 0.3850743\n",
      "epoch: 230 step: 91, loss is 0.41061437\n",
      "epoch: 240 step: 91, loss is 0.12830159\n",
      "epoch: 250 step: 91, loss is 0.13217023\n",
      "epoch: 260 step: 91, loss is 0.18531458\n",
      "epoch: 270 step: 91, loss is 0.2966535\n",
      "epoch: 280 step: 91, loss is 0.36539117\n",
      "epoch: 290 step: 91, loss is 0.3684927\n",
      "epoch: 300 step: 91, loss is 0.29769\n",
      "epoch: 310 step: 91, loss is 0.45691985\n",
      "epoch: 320 step: 91, loss is 0.36180994\n",
      "epoch: 330 step: 91, loss is 0.23320696\n",
      "epoch: 340 step: 91, loss is 0.36809736\n",
      "epoch: 350 step: 91, loss is 0.23469988\n",
      "epoch: 360 step: 91, loss is 0.22683823\n",
      "epoch: 370 step: 91, loss is 0.4996717\n",
      "epoch: 380 step: 91, loss is 0.09947873\n",
      "epoch: 390 step: 91, loss is 0.4063129\n",
      "epoch: 400 step: 91, loss is 0.087216124\n",
      "{'acc': 0.8849431818181818}\n"
     ]
    }
   ],
   "source": [
    "net=Identification_Net(num_class=cfg.num_class, channel=cfg.channel, dropout_ratio=cfg.dropout_ratio)\n",
    "#计算softmax交叉熵。\n",
    "net_loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction=\"mean\")\n",
    "#opt\n",
    "fc_weight_params = list(filter(lambda x: 'fc' in x.name and 'weight' in x.name, net.trainable_params()))\n",
    "other_params=list(filter(lambda x: 'fc' not in x.name or 'weight' not in x.name, net.trainable_params()))\n",
    "group_params = [{'params': fc_weight_params, 'weight_decay': cfg.weight_decay},\n",
    "                {'params': other_params},\n",
    "                {'order_params': net.trainable_params()}]\n",
    "#设置Adam优化器\n",
    "net_opt = nn.Adam(group_params, learning_rate=cfg.lr, weight_decay=0.0)\n",
    "#net_opt = nn.Adam(params=net.trainable_params(), learning_rate=cfg.lr, weight_decay=0.1)\n",
    "\n",
    "model = Model(net, loss_fn=net_loss, optimizer=net_opt, metrics={\"acc\"})\n",
    "loss_cb = LossMonitor(per_print_times=de_train.get_dataset_size()*10)\n",
    "config_ck = CheckpointConfig(save_checkpoint_steps=cfg.save_checkpoint_steps,\n",
    "                             keep_checkpoint_max=cfg.keep_checkpoint_max)\n",
    "ckpoint_cb = ModelCheckpoint(prefix=cfg.output_prefix, directory=cfg.output_directory, config=config_ck)\n",
    "print(\"============== Starting Training ==============\")\n",
    "model.train(cfg.epoch_size, de_train, callbacks=[loss_cb, ckpoint_cb], dataset_sink_mode=True)\n",
    "\n",
    "# 使用测试集评估模型，打印总体准确率\n",
    "metric = model.eval(de_test)\n",
    "print(metric)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "第0个sample预测结果： tulips    真实结果： tulips\n",
      "第1个sample预测结果： dandelion    真实结果： dandelion\n",
      "第2个sample预测结果： sunflowers    真实结果： sunflowers\n",
      "第3个sample预测结果： sunflowers    真实结果： sunflowers\n",
      "第4个sample预测结果： tulips    真实结果： sunflowers\n",
      "第5个sample预测结果： dandelion    真实结果： dandelion\n",
      "第6个sample预测结果： tulips    真实结果： tulips\n",
      "第7个sample预测结果： roses    真实结果： roses\n",
      "第8个sample预测结果： dandelion    真实结果： dandelion\n",
      "第9个sample预测结果： daisy    真实结果： daisy\n"
     ]
    }
   ],
   "source": [
    "#加载模型\n",
    "import os\n",
    "CKPT = os.path.join(cfg.output_directory,cfg.output_prefix+'-'+str(cfg.epoch_size)+'_'+str(de_train.get_dataset_size())+'.ckpt')\n",
    "net = Identification_Net(num_class=cfg.num_class, channel=cfg.channel, dropout_ratio=cfg.dropout_ratio)\n",
    "load_checkpoint(CKPT, net=net)\n",
    "model = Model(net)\n",
    "# 预测\n",
    "class_names = {0:'daisy',1:'dandelion',2:'roses',3:'sunflowers',4:'tulips'}\n",
    "test_ = de_test.create_dict_iterator().__next__()\n",
    "test = Tensor(test_['image'], mindspore.float32)\n",
    "predictions = model.predict(test)\n",
    "predictions = predictions.asnumpy()\n",
    "true_label = test_['label'].asnumpy()\n",
    "\n",
    "#显示预测结果\n",
    "for i in range(10):\n",
    "    p_np = predictions[i, :]\n",
    "    pre_label = np.argmax(p_np)\n",
    "    print('第' + str(i) + '个sample预测结果：', class_names[pre_label], '   真实结果：', class_names[true_label[i]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
